#导入引脚控制和定时器模块
from pyb import Pin, Timer
inverse_left=False  #设置左边车轮的正负转，如果车轮现在是反转的，就将其更改为True，如果是正传，则依旧为False
inverse_right=False #设置左边车轮的正负转，如果车轮现在是反转的，就将其更改为True，如果是正传，则依旧为False

#控制左右电机
ain1 =  Pin('P0', Pin.OUT_PP)   #Pin.OUT_PP是设置上拉电阻
ain2 =  Pin('P1', Pin.OUT_PP)
bin1 =  Pin('P2', Pin.OUT_PP)
bin2 =  Pin('P3', Pin.OUT_PP)

#引脚初始化为低电平
ain1.low()
ain2.low()
bin1.low()
bin2.low()

#P7和P8为PWM输出口
pwma = Pin('P7')
pwmb = Pin('P8')
#设置定时器4，1000HZ的频率
tim = Timer(4, freq=1000)
#新建两个通道
ch1 = tim.channel(1, Timer.PWM, pin=pwma) #P7
ch2 = tim.channel(2, Timer.PWM, pin=pwmb) #P8
#设置两个通道的占空比为0
ch1.pulse_width_percent(0)
ch2.pulse_width_percent(0)

#定值电机左右运动的函数
def run(left_speed, right_speed):
    #设置电机正转或者反转。因为刚安装的时候，左右两个直流电机的两个接线与OpenMV的接线可能相反。可能一个轮子正转一个反转
    if inverse_left==True:    
        left_speed=(-left_speed)
    if inverse_right==True:
        right_speed=(-right_speed)
    #设置小车正反转
    if left_speed < 0:
        ain1.low()
        ain2.high()
    else:
        ain1.high()
        ain2.low()
        #设置PWM，abs作用是取绝对值，控制小车速度
    ch1.pulse_width_percent(int(abs(left_speed)))
    #右电机参数设置
    if right_speed < 0:
        bin1.low()
        bin2.high()
    else:
        bin1.high()
        bin2.low()
    ch2.pulse_width_percent(int(abs(right_speed)))
